#### 23.2.1 Python Commands

gdb provides two commands for accessing the Python interpreter, and one related setting:

`python-interactive` [command]
`pi` [command]
  Without an argument, the `python-interactive` command can be used to start an interactive Python prompt. To return to gdb, type the `EOF` character (e.g., `Ctrl-D` on an empty prompt).

  Alternatively, a single-line Python command can be given as an argument and evaluated. If the command is an expression, the result will be printed; otherwise, nothing will be printed. For example:

                (gdb) python-interactive 2 + 3
                5

`python` [command]
`py` [command]
  The `python` command can be used to evaluate Python code.

  If given an argument, the `python` command will evaluate the argument as a Python command. For example:

                (gdb) python print 23
                23

  If you do not provide an argument to `python`, it will act as a multi-line command, like `define`. In this case, the Python script is made up of subsequent command lines, given after the `python` command. This command list is terminated using a line containing `end`. For example:

                (gdb) python
                Type python script
                End with a line saying just "end".
                >print 23
                >end
                23

`set python print-stack`
  By default, gdb will print only the message component of a Python exception when an error occurs in a Python script. This can be controlled using `set python print-stack`: if `full`, then full Python stack printing is enabled; if `none`, then Python stack and message printing is disabled; if `message`, the default, only the message component of the error is printed.

It is also possible to execute a Python script from the gdb interpreter:

`source ```script-name``
  The script name must end with ``.py`' and gdb must be configured to recognize the script language based on filename extension using the `script-extension` setting. See Extending GDB.
`python execfile ("script-name")`
  This method is based on the `execfile` Python built-in function, and thus is always available.